Android设计模式:Builder创建者模式在Android中的应用,Dialog,StringBuilder

    根据需要,进行创建。-----箴言-----

内容简介:

在实际使用创建者模式进行对象的创建时,经常利用“内部类”来进行对象的创建,耦合性比较低。

从两代码来看创建者模式在Android的实际体现和运用。

例子1:Dialog的创建:

代码如下:

 

在BroswerActivity.java中,有对WebViewClient的创建,代码如下:


 

private final WebViewClient mWebViewClient = new WebViewClient() {

……

        /**

         * Displays SSL error(s) dialog to the user.

         */

        @Override

        public void onReceivedSslError(

            final WebView view, final SslErrorHandler handler, final SslError error) {

            ……

            new AlertDialog.Builder(BrowserActivity.this)

                    .setTitle(R.string.security_warning)

                    .setIcon(android.R.drawable.ic_dialog_alert)

                    .setView(warningsView)

                    .setPositiveButton(R.string.ssl_continue,

                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog, int whichButton) {

                                    handler.proceed();

                                }

                            })

                    .setNeutralButton(R.string.view_certificate,

                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog, int whichButton) {

                                    showSSLCertificateOnError(view, handler, error);

                                }

                            })

                    .setNegativeButton(R.string.cancel,

                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog, int whichButton) {

                                    handler.cancel();

                                    BrowserActivity.this.resetTitleAndRevertLockIcon();

                                }

                            })

                    .setOnCancelListener(

                            new DialogInterface.OnCancelListener() {

                                public void onCancel(DialogInterface dialog) {

                                    handler.cancel();

                                    BrowserActivity.this.resetTitleAndRevertLockIcon();

                                }

                            })

                    .show();

                   ……
}

 

分析与说明:

(1)功能:正如注释中所示,创建一个error dialog并显示

(2)模式说明: 这里,使用了简化的builder模式,将抽象建造者省略,只使用一个具体建造者,并且将指导者角色也省略了。 AlertDialog.Builder就是具体建造者,另外,它是以匿名类的方式被创建的,而且,Builder类是AlertDialog的内部类,这样,耦合性比较低,这正是面向对象中要达到的设计意图之一。 最后调用show函数,它的返回类型正是我们要创建的产品,即AlertDialog。 所以,Builder(具体建造者)是AlertDialog(产品)的内部匿名类,用来创建并显示一个dialog。

(3)启示: 我们完全可以对builder模式进行简化,将抽象建造者甚至指导者角色省略。 具体创建者和产品之间可以用内部类来实现,以达到低耦合的目的。

 

例子2:String对象的创建者模式的体现:StringBuilder,StringBuffer


示例代码:

 

public class DefaultHttpClientConnection extends SocketHttpClientConnection {
……
    public String toString() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("[");
        if (isOpen()) {
            buffer.append(getRemotePort());
        } else {
            buffer.append("closed");
        }
        buffer.append("]");
        return buffer.toString();
}
}


分析:
   (1)功能:StringBuffer和StringBuilder是包含在java.lang包中的。
   (2)模式说明:
• 这里,使用了简化的builder模式,将指导者角色省略。
• builder模式被用于实现DefaultHttpClientConnection的成员函数toString。
• 最后的return buffer.toString()其实返回的就是产品String。
   (3)启示:
• 完全可以用builder模式去实现一个类的成员函数。


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值